import { getUserInfo, login } from '@/api/user'
import { constantRoutes, resetRouter } from '@/router'
import { setToken, getToken, removeToken } from '@/utils/auth'
export default {
  namespaced: true,
  state: {
    token: getToken(),
    userInfo: {},
    routes: constantRoutes
  },
  mutations: {
    // 设置路由
    setRoutes(state, newRouter) {
      state.routes = newRouter
    },
    updateToken(state, newToken) {
      state.token = newToken
      // 本地存储
      setToken(newToken)
    },
    delToken(state) {
      // 1. 仓库中的token清除掉
      state.token = ''
      // 2. cokkie中的token清除掉
      removeToken()
    },
    // 更新用户信息
    updateUserInfo(state, data) {
      state.userInfo = data
    }

  },
  actions: {
    // 登出事件
    logout(context) {
      context.commit('delToken')
      context.commit('updateUserInfo', {})
      // 重置路由信息
      resetRouter()
    },
    async  updateTokenAsync(context, data) {
      // 1. 调用登录接口请求 - TODO
      const token = await login(data)
      // 2. 接口返回token - TODO
      // 3. 调用mutation的方法
      context.commit('updateToken', token)
    },
    async  getUserInfoAsync(context) {
      // 1. 获取用户信息 - 发送请求
      const res = await getUserInfo()
      // 2. 调用mutation方法 - 存储用户信息
      context.commit('updateUserInfo', res)
      // 将用户的信息返回
      return res.roles
    }
  }
}

